package com.tender.dtos;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

@Data
public class ImportDTO extends IndexOrderDTO {
    /*************** SbcShipDataEntity start ******************/
    @Schema(description = "艘次ID")
    private String shipVisitId;

    @Schema(description = "MMSI")
    private String shipMmsi;

    @Schema(description = "英文船名")
    private String englishName;

    @Schema(description = "IMO")
    private String shipImo;

    @Schema(description = "国家代码")
    private String countryCode;

    @Schema(description = "船舶呼号")
    private String shipCall;

    @Schema(description = "船代码")
    private String shipCode;

    @Schema(description = "最大载重吨")
    private BigDecimal shipDeadWeight;

    @Schema(description = "船长")
    private BigDecimal shipLength;

    @Schema(description = "船宽")
    private BigDecimal shipWidth;

    @Schema(description = "建造日期")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date buildDate;

    @Schema(description = "船速")
    private BigDecimal shipSpeed;

    @Schema(description = "空载艏吃水")
    private BigDecimal emptyBowDraft;

    @Schema(description = "空载艉吃水")
    private BigDecimal emptySternDraft;

    @Schema(description = "重载艏吃水")
    private BigDecimal fullBowDraft;

    @Schema(description = "重载艉吃水")
    private BigDecimal fullSternDraft;

    /*************** SbcShipDataEntity end ******************/
    // ------------------------------------------------------
    /*************** ShipWorkUnitEntity start ******************/
    @Schema(description = "船舶装卸ID")
    private String workUnitId;

    @Schema(description = "箱号")
    private String unitNo;

    @Schema(description = "提单号")
    private String billNo;

    @Schema(description = "堆场到达时间")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date yardArriveTime;

    @Schema(description = "堆场作业时间")
    private Date yardWorkTime;

    @Schema(description = "堆场离开时间")
    private Date yardDepartTime;

    /*************** ShipWorkUnitEntity end ******************/
    // ------------------------------------------------------
    /*************** ArchGateIoEntity start ******************/

    @Schema(description = "车牌号")
    private String truckPlateNo;

    @Schema(description = "进港作业方式")
    private String inGateWorkWay;

    @Schema(description = "进港作业类型")
    private String inGateWorkType;

    @Schema(description = "出港作业方式")
    private String outGateWorkWay;

    @Schema(description = "出港作业类型")
    private String outGateWorkType;

    @Schema(description = "进港时间")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date inGateTime;

    @Schema(description = "出港时间")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date outGateTime;

    /*************** ArchGateIoEntity end ******************/
    // ------------------------------------------------------
    /*************** CustomsInspectEntity start ******************/

    @Schema(description = "查验时间")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date inspectTime;

    /*************** CustomsInspectEntity end ******************/
    // ------------------------------------------------------
    /*************** ShipManifestEntity start ******************/
    @Schema(description = "发货人名称")
    private String shipperName;

    @Schema(description = "收货人名称")
    private String consigneeName;

//    @Schema(description = "状态/当前状态")
//    private String planState;

//    @Schema(description = "状态/当前状态")
//    private String state;
    /*************** ShipManifestEntity end ******************/

    // ------------------------------------------------------
    /*************** ShipVisitBerthEntity start ******************/

    /*************** ShipVisitBerthEntity end ******************/

    /*************** SbcTruckEntity start ******************/

    @Schema(description = "联系人")
    private String contactor;

    @Schema(description = "手机号")
    private String mobileNo;

    @Schema(description = "联系方式")
    private String contactTxt;

    @Schema(description = "颜色")
    private String truckColor;

    @Schema(description = "载重吨")
    private BigDecimal truckDeadWgt;

    /*************** SbcTruckEntity end ******************/

    /*************** WxDrivepermitsEntity start ******************/
    @Schema(description = "车架号")
    private String vin;

    @Schema(description = "发动机号")
    private String engineNo;

    @Schema(description = "运营证号")
    private String opCertificateNo;

    @Schema(description = "排放等级")
    private String emissionLevel;

    @Schema(description = "环保标志")  // 已上传、未上传
    private String envProtectionLabel;

    @Schema(description = "所属公司或者个人")
    private String owner;

    @Schema(description = "个人或者公司 通讯地址")
    private String address;

    /*************** WxDrivepermitsEntity end ******************/

    /*************** GateAppntEntity start ******************/

    @Schema(description = "拖车预约/计划开始时间")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date planBeginTime;

    @Schema(description = "拖车预约/计划结束时间")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date planEndTime;

    @Schema(description = "预约批次")
    private String appntVisitId;

    /*************** GateAppntEntity end ******************/
}
